import org.junit.Test;

import java.io.*;
import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;

public class Demo1 {

    /*
    6.由控制台按照固定格式输入学生信息，包括学号，姓名，年龄信息，当输入的内容为exit退出；
    将输入的学生信息分别封装到一个Student对象中，再将每个Student对象加入到一个集合中，
    要求集合中的元素按照年龄大小正序排序；最后遍历集合，将集合中学生信息写入到记事本，每个学生数据占单独一行。
     */
    @Test
    public void test3() throws Exception {
        BufferedWriter bw = new BufferedWriter(new FileWriter("file\\a.txt"));

        Set<Student> set = new TreeSet<>();

        for (Student stu : set) {
            bw.write(stu.toString());
        }
    }


    /*
    5.假设从入开学开始所有书写的Java类代码都在d:/java文件夹下，
    包括多级子文件夹。使用IO流获取从入学开始，到目前为止已经写了多少行Java代码。
    提示：其实就是获取d:/java文件夹及其子文件夹下的所有.java文件，使用readLine()读取其中每一行，
    每读取一行，行数加1。所有的文件读取完毕，得到总共已经写的Java代码行数。需要结合递归实现。
     */
    @Test
    public void test2() throws Exception {
        String src = "D:\\develop\\shujia\\java_se_20";

        CountWrap countWrap = new CountWrap();
        countCodeNum(new File(src), countWrap);
        System.out.println(countWrap.num);

    }

    public void countCodeNum(File dir, CountWrap countWrap) throws IOException {
        File[] files = dir.listFiles();

        for (File file : files) {
            if (file.isDirectory()) {
                countCodeNum(file, countWrap);
            } else if (file.getName().endsWith(".java")) {
                BufferedReader br = new BufferedReader(new FileReader(file));
                while (br.readLine() != null) {
                    countWrap.num++;
                }

            }
        }
    }

}

class CountWrap {
    public int num;
}

class Student implements Comparable<Student> {

    private int age;

    @Override
    public int compareTo(Student o) {
        return age = o.age;
    }
}
